https://www.geeksforgeeks.org/introduction-semantic-versioning/